# -*- coding: utf-8 -*-
# @Time : 2024/3/18 23:33
# @Author : TH
# Description:对Excel表格里面的不同sheet进行读写操作

from openpyxl import load_workbook
from config.pathManage import EXCEL_PATH


class OperationExcel:
    def __init__(self):
        # 打开Excel表格
        self.open_excel = load_workbook(EXCEL_PATH)

    def get_sheet_names(self):
        """
        :return: 获取所有的sheet对象
        """
        return self.open_excel.get_sheet_names()

    def open_excel_sheet(self, sheet_name):
        """设置需要操作的sheet
        :param sheet_name: 表名
        :return: 对应的sheet对象
        """
        return self.open_excel[sheet_name]

    def from_ab_get_data(self, sheet_name, cell, row):
        """通过单元格获取数据，例如：A2
        :param sheet_name: 表名
        :param cell: 所在列A, B, ...
        :param row: 所在行1, 2, ...
        :return: 对应单元格的值
        """
        open_sheet = self.open_excel_sheet(sheet_name)
        value = open_sheet[cell + str(row)].value
        return value

    def from_xy_get_data(self, sheet_name, x, y):
        """通过单元格坐标获取数据，例如：(1, 2)
        :param sheet_name: 表名
        :param x: 横坐标x
        :param y: 纵坐标y
        :return: 返回该坐标(x, y)对应的数据
        """
        open_sheet = self.open_excel_sheet(sheet_name)
        value = open_sheet.cell(x, y).value
        return value

    def write_data(self, sheet_name, cell, row, write_value):
        """写入数据
        :param sheet_name: 表名
        :param cell: 所在列A, B, ...
        :param row: 所在行1, 2, ...
        :param write_value: 写入的值
        :return:
        """
        wb = load_workbook(filename=EXCEL_PATH)
        ws = wb[sheet_name]
        ws[cell + str(row)] = write_value
        wb.save(filename=EXCEL_PATH)


if __name__ == '__main__':
    read_excel = OperationExcel()
    print(read_excel.open_excel_sheet("Sheet2"))
    print(read_excel.from_ab_get_data("Sheet1", "A", "2"))
    print(read_excel.from_xy_get_data("Sheet1", 2, 1))
    print(read_excel.get_sheet_names())
    # 测试excel写入方法
    # read_excel.write_data("Sheet1", "I", "2", "通过")